# 使用 PyJWT 库生成带过期时间的 JWT Token 示例代码
import time
import jwt

secret_key = 'django-insecure-kazb_)8hln01%7x&-uw6%=ckf(e(dgfn851x5b#&#nitvylvth'


# 生成 JWT  生成刷新令牌的函数
def generate_refresh_token(payload):
    expiration = time.time() + (14 * 24 * 60 * 60)  # 当前时间戳 + 14天的秒数
    token = jwt.encode({**payload, 'exp': expiration}, secret_key, algorithm='HS256')
    return token


# 生成 JWT  生成访问令牌的函数
def generate_access_token(payload):
    expiration = time.time() + (2 * 60 * 60)  # 当前时间戳 + 2小时(2 * 60 * 60)
    token = jwt.encode({**payload, 'exp': expiration}, secret_key, algorithm='HS256')
    return token


# 解密 JWT
def decode_jwt(token):
    try:
        payload = jwt.decode(token, secret_key, algorithms=['HS256'])
        return payload
    except jwt.ExpiredSignatureError:
        # 处理令牌过期的情况
        return "令牌已过期"
    except jwt.InvalidTokenError:
        # 处理无效令牌的情况
        return "令牌无效"
